<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.6"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Percepio Trace Recorder: objectHandleStackType Struct Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr id="projectrow">
  <td id="projectalign">
   <div id="projectname">Percepio Trace Recorder<span id="projectnumber">&#160;v4.9.2</span>
   </div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.6 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "search/",'.html');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() {
  initMenu('',true,false,'search.php','Search');
  $(document).ready(function() { init_search(); });
});
/* @license-end */
</script>
<div id="main-nav"></div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
  <div id="nav-tree">
    <div id="nav-tree-contents">
      <div id="nav-sync" class="sync"></div>
    </div>
  </div>
  <div id="splitbar" style="-moz-user-select:none;" 
       class="ui-resizable-handle">
  </div>
</div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(document).ready(function(){initNavTree('structobjectHandleStackType.html',''); initResizable(); });
/* @license-end */
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
     onmouseover="return searchBox.OnSearchSelectShow()"
     onmouseout="return searchBox.OnSearchSelectHide()"
     onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>

<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<div id="MSearchResults">
<div class="SRPage">
<div id="SRIndex">
<div id="SRResults"></div>
<div class="SRStatus" id="Loading">Loading...</div>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
</div>
</div>
</div>
</div>

<div class="header">
  <div class="summary">
<a href="#pub-attribs">Data Fields</a>  </div>
  <div class="headertitle"><div class="title">objectHandleStackType Struct Reference</div></div>
</div><!--header-->
<div class="contents">

<p>Object handle stack struct.  
 <a href="structobjectHandleStackType.html#details">More...</a></p>

<p><code>#include &lt;<a class="el" href="trcRecorder_8h_source.html">trcRecorder.h</a>&gt;</code></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-attribs" name="pub-attribs"></a>
Data Fields</h2></td></tr>
<tr class="memitem:a194dc7a274404a898c2858c761cb1b79"><td class="memItemLeft" align="right" valign="top">uint16_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structobjectHandleStackType.html#a194dc7a274404a898c2858c761cb1b79">indexOfNextAvailableHandle</a> [TRACE_NCLASSES]</td></tr>
<tr class="separator:a194dc7a274404a898c2858c761cb1b79"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a165dd3475f5cd974af60a9aeef60195c"><td class="memItemLeft" align="right" valign="top">uint16_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structobjectHandleStackType.html#a165dd3475f5cd974af60a9aeef60195c">lowestIndexOfClass</a> [TRACE_NCLASSES]</td></tr>
<tr class="separator:a165dd3475f5cd974af60a9aeef60195c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae16024733ead6b5f2fe0230f58183feb"><td class="memItemLeft" align="right" valign="top">uint16_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structobjectHandleStackType.html#ae16024733ead6b5f2fe0230f58183feb">highestIndexOfClass</a> [TRACE_NCLASSES]</td></tr>
<tr class="separator:ae16024733ead6b5f2fe0230f58183feb"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af6dce836de4bd16eb2227b9476fbf99b"><td class="memItemLeft" align="right" valign="top">uint16_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structobjectHandleStackType.html#af6dce836de4bd16eb2227b9476fbf99b">handleCountWaterMarksOfClass</a> [TRACE_NCLASSES]</td></tr>
<tr class="separator:af6dce836de4bd16eb2227b9476fbf99b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6eab3d32f0fd8af657b9173968d1e57f"><td class="memItemLeft" align="right" valign="top">traceHandle&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structobjectHandleStackType.html#a6eab3d32f0fd8af657b9173968d1e57f">objectHandles</a> [TRACE_KERNEL_OBJECT_COUNT]</td></tr>
<tr class="separator:a6eab3d32f0fd8af657b9173968d1e57f"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>Object handle stack struct. </p>
<p>This data-structure is used to provide a mechanism for 1-byte trace object handles. This way, only 1 byte is necessary instead of 4 bytes (a pointer) when storing a reference to an object. This allows for up to 255 objects of each object class active at any given moment. There can be more "historic" objects, that have been deleted - that number is only limited by the size of the symbol table.</p>
<p>Note that handle zero (0) is not used, it is a code for an invalid handle.</p>
<p>This data structure keeps track of the FREE handles, not the handles in use. This data structure contains one stack per object class. When a handle is allocated to an object, the next free handle is popped from the stack. When a handle is released (on object delete), it is pushed back on the stack. Note that there is no initialization code that pushed the free handles initially, that is not necessary due to the following optimization:</p>
<p>The stack of handles (objectHandles) is initially all zeros. Since zero is not a valid handle, that is a signal of additional handles needed. If a zero is received when popping a new handle, it is replaced by the index of the popped handle instead. </p>
</div><h2 class="groupheader">Field Documentation</h2>
<a id="af6dce836de4bd16eb2227b9476fbf99b" name="af6dce836de4bd16eb2227b9476fbf99b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#af6dce836de4bd16eb2227b9476fbf99b">&#9670;&#160;</a></span>handleCountWaterMarksOfClass</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">uint16_t objectHandleStackType::handleCountWaterMarksOfClass[TRACE_NCLASSES]</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>The highest use count for this class (for statistics) </p>

</div>
</div>
<a id="ae16024733ead6b5f2fe0230f58183feb" name="ae16024733ead6b5f2fe0230f58183feb"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ae16024733ead6b5f2fe0230f58183feb">&#9670;&#160;</a></span>highestIndexOfClass</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">uint16_t objectHandleStackType::highestIndexOfClass[TRACE_NCLASSES]</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>The highest index of this class (constant) </p>

</div>
</div>
<a id="a194dc7a274404a898c2858c761cb1b79" name="a194dc7a274404a898c2858c761cb1b79"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a194dc7a274404a898c2858c761cb1b79">&#9670;&#160;</a></span>indexOfNextAvailableHandle</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">uint16_t objectHandleStackType::indexOfNextAvailableHandle[TRACE_NCLASSES]</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>For each object class, the index of the next handle to allocate </p>

</div>
</div>
<a id="a165dd3475f5cd974af60a9aeef60195c" name="a165dd3475f5cd974af60a9aeef60195c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a165dd3475f5cd974af60a9aeef60195c">&#9670;&#160;</a></span>lowestIndexOfClass</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">uint16_t objectHandleStackType::lowestIndexOfClass[TRACE_NCLASSES]</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>The lowest index of this class (constant) </p>

</div>
</div>
<a id="a6eab3d32f0fd8af657b9173968d1e57f" name="a6eab3d32f0fd8af657b9173968d1e57f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a6eab3d32f0fd8af657b9173968d1e57f">&#9670;&#160;</a></span>objectHandles</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">traceHandle objectHandleStackType::objectHandles[TRACE_KERNEL_OBJECT_COUNT]</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>The free object handles - a set of stacks within this array </p>

</div>
</div>
<hr/>The documentation for this struct was generated from the following file:<ul>
<li>include/<a class="el" href="trcRecorder_8h_source.html">trcRecorder.h</a></li>
</ul>
</div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
  <ul>
    <li class="navelem"><a class="el" href="structobjectHandleStackType.html">objectHandleStackType</a></li>
    <li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.6 </li>
  </ul>
</div>
</body>
</html>
